package com.zzyl.common.utils;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

import java.io.IOException;
import java.io.InputStream;

/**
 *@Author: 布莱恩
 *@Date: 2025/9/29 21:41
 *@Description:
 **/
public class PDFUtil {

    /**
     * 将PDF文件输入流转换为文本字符串
     *
     * @param inputStream PDF文件的输入流
     * @return 提取的PDF文本内容，如果出现异常则返回null
     */
    public static String pdfToString(InputStream inputStream) {

        PDDocument document = null;

        try {
            // 加载PDF文件，禁用字体缓存以避免EOF异常
            System.setProperty("sun.java2d.cmm", "sun.java2d.cmm.kcms.KcmsServiceProvider");

            // 加载PDF文件
            document = PDDocument.load(inputStream);

            // 创建一个PDFTextStripper实例来提取文本
            PDFTextStripper pdfTextStripper = new PDFTextStripper();

            // 设置排序选项提高容错性
            pdfTextStripper.setSortByPosition(true);

            // 从PDF文档中提取文本
            String text = pdfTextStripper.getText(document);
            return text;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭PDF文档
            if (document != null) {
                try {
                    document.close();
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }


}
